home *** CD-ROM | disk | FTP | other *** search
/ Basic Instinct 2 Press Kit / Basic Instinct 2 Press Kit.iso / pc / main.dxr / FlashPaper_1_BIProdNotes.swf / scripts / __Packages / FPUI / Scrollbar.as < prev    next >
Encoding:
Text File  |  2006-03-15  |  12.5 KB  |  394 lines

  1. class FPUI.Scrollbar extends FPUI.Component
  2. {
  3.    var controller;
  4.    var m_scrollPosition = 0;
  5.    var m_maxPos = 0;
  6.    var m_pageSize = 0;
  7.    var m_scrollTop = 0;
  8.    var m_scrollBot = 0;
  9.    var m_trackHeight = 0;
  10.    var m_largeScroll = 0;
  11.    var m_smallScroll = 1;
  12.    var m_thumbHeight = 0;
  13.    var m_horizontal = false;
  14.    var m_isScrolling = false;
  15.    var m_scrollingIntervalID = 0;
  16.    var m_scrollThumbMC = null;
  17.    var m_upArrowMC = null;
  18.    var m_downArrowMC = null;
  19.    var m_mouseOverMC = null;
  20.    function Scrollbar()
  21.    {
  22.       var _loc1_ = this;
  23.       super();
  24.       _loc1_.tabEnabled = false;
  25.       _loc1_.tabChildren = false;
  26.       _loc1_.m_horizontal = _loc1_._width > _loc1_._height;
  27.       _loc1_.m_width = !_loc1_.m_horizontal ? _loc1_._height : _loc1_._width;
  28.       _loc1_._xscale = 100;
  29.       _loc1_._yscale = 100;
  30.       _loc1_.setScrollPosition(0);
  31.       _loc1_.setSize(_loc1_.m_width);
  32.    }
  33.    function setHorizontal(flag)
  34.    {
  35.       var _loc1_ = this;
  36.       var _loc2_ = flag;
  37.       if(_loc1_.m_horizontal && !_loc2_)
  38.       {
  39.          _loc1_._xscale = 100;
  40.          _loc1_._rotation = 0;
  41.       }
  42.       else if(_loc2_ && !_loc1_.m_horizontal)
  43.       {
  44.          _loc1_._xscale = -100;
  45.          _loc1_._rotation = -90;
  46.       }
  47.       _loc1_.m_horizontal = _loc2_;
  48.    }
  49.    static function clearUIFuncs(mc)
  50.    {
  51.       var _loc1_ = mc;
  52.       _loc1_.gotoAndStop("disabled");
  53.       _loc1_.onPress = null;
  54.       _loc1_.onRelease = null;
  55.       _loc1_.onDragOver = null;
  56.       _loc1_.onDragOut = null;
  57.       _loc1_.onRollOver = null;
  58.       _loc1_.onRollOut = null;
  59.       _loc1_.onReleaseOutside = null;
  60.       _loc1_.useHandCursor = false;
  61.    }
  62.    function setScrollProperties(pSize, mxPos)
  63.    {
  64.       var _loc1_ = this;
  65.       _loc1_.m_pageSize = pSize;
  66.       _loc1_.m_maxPos = Math.max(mxPos,0);
  67.       _loc1_.m_scrollPosition = Math.max(0,_loc1_.m_scrollPosition);
  68.       _loc1_.m_scrollPosition = Math.min(_loc1_.m_maxPos,_loc1_.m_scrollPosition);
  69.       FPUI.Scrollbar.clearUIFuncs(_loc1_.m_upArrowMC);
  70.       FPUI.Scrollbar.clearUIFuncs(_loc1_.m_downArrowMC);
  71.       FPUI.Scrollbar.clearUIFuncs(_loc1_.scrollTrack_mc);
  72.       _loc1_.m_scrollThumbMC.removeMovieClip();
  73.       if(_loc1_.m_maxPos > 0)
  74.       {
  75.          var _loc2_ = undefined;
  76.          _loc2_ = _loc1_.m_upArrowMC;
  77.          _loc2_.gotoAndStop("up");
  78.          if(_loc1_.m_enable)
  79.          {
  80.             _loc2_.onPress = _loc2_.onDragOver = function()
  81.             {
  82.                this.controller.startUpDownScroller(this,-1);
  83.             };
  84.             _loc2_.onRelease = _loc2_.onDragOut = function()
  85.             {
  86.                this.controller.stopScrolling();
  87.             };
  88.             _loc2_.onRollOver = function()
  89.             {
  90.                this.controller.rolloverPart(this);
  91.             };
  92.             _loc2_.onRollOut = _loc2_.onReleaseOutside = function()
  93.             {
  94.                this.controller.rolloutPart(this);
  95.             };
  96.          }
  97.          _loc2_._alpha = !_loc1_.m_enable ? 50 : 100;
  98.          _loc2_ = _loc1_.m_downArrowMC;
  99.          _loc2_.gotoAndStop("up");
  100.          if(_loc1_.m_enable)
  101.          {
  102.             _loc2_.onPress = _loc2_.onDragOver = function()
  103.             {
  104.                this.controller.startUpDownScroller(this,1);
  105.             };
  106.             _loc2_.onRelease = _loc2_.onDragOut = function()
  107.             {
  108.                this.controller.stopScrolling();
  109.             };
  110.             _loc2_.onRollOver = function()
  111.             {
  112.                this.controller.rolloverPart(this);
  113.             };
  114.             _loc2_.onRollOut = _loc2_.onReleaseOutside = function()
  115.             {
  116.                this.controller.rolloutPart(this);
  117.             };
  118.          }
  119.          _loc2_._alpha = !_loc1_.m_enable ? 50 : 100;
  120.          _loc2_ = _loc1_.scrollTrack_mc;
  121.          _loc2_.gotoAndStop("enabled");
  122.          if(_loc1_.m_enable)
  123.          {
  124.             _loc2_.onPress = _loc2_.onDragOver = function()
  125.             {
  126.                this.controller.startTrackScroller();
  127.             };
  128.             _loc2_.onRelease = _loc2_.onDragOut = _loc2_.onRollOut = function()
  129.             {
  130.                this.controller.stopScrolling();
  131.             };
  132.          }
  133.          var tmp = _loc1_.getScrollPosition();
  134.          _loc2_ = _loc1_.attachMovie("mScrollThumb","m_scrollThumbMC",3);
  135.          _loc2_._x = 1;
  136.          _loc2_._y = 13;
  137.          if(_loc1_.m_enable)
  138.          {
  139.             _loc2_.useHandCursor = false;
  140.             _loc2_.controller = _loc1_;
  141.             _loc2_.onPress = function()
  142.             {
  143.                this.controller.startDragThumb();
  144.             };
  145.             _loc2_.onRelease = _loc2_.onReleaseOutside = function()
  146.             {
  147.                this.controller.stopDragThumb();
  148.             };
  149.             _loc2_.onRollOver = function()
  150.             {
  151.                this.controller.rollOverOrOutOfThumb(true);
  152.             };
  153.             _loc2_.onRollOut = function()
  154.             {
  155.                this.controller.rollOverOrOutOfThumb(false);
  156.             };
  157.             _loc2_.onDragOut = function()
  158.             {
  159.                this.controller.dragoutThumb();
  160.             };
  161.          }
  162.          else
  163.          {
  164.             FPUI.Scrollbar.clearUIFuncs(_loc2_);
  165.          }
  166.          _loc2_._alpha = !_loc1_.m_enable ? 50 : 100;
  167.          var _loc3_ = _loc1_.m_width - 32;
  168.          _loc1_.m_thumbHeight = Math.max(_loc1_.m_pageSize / (_loc1_.m_maxPos + _loc1_.m_pageSize) * _loc3_,26);
  169.          var midHeight = _loc1_.m_thumbHeight - 10;
  170.          _loc2_.mc_sliderMid._yScale = midHeight * 100 / _loc2_.mc_sliderMid._height;
  171.          _loc2_.mc_sliderMid._y = 2;
  172.          _loc2_.grips._y = Math.floor(_loc1_.m_thumbHeight / 2 - _loc2_.grips._height / 2 - 1.5);
  173.          _loc2_.mc_sliderBot._y = 5 + midHeight - 3;
  174.          _loc1_.m_scrollTop = _loc2_._y + 3;
  175.          _loc1_.m_trackHeight = _loc3_ - _loc1_.m_thumbHeight + 3;
  176.          _loc1_.m_scrollBot = _loc1_.m_scrollTop + _loc1_.m_trackHeight;
  177.          _loc1_.m_scrollPosition = Infinity;
  178.          _loc1_.setScrollPosition(tmp);
  179.       }
  180.    }
  181.    function getScrollPosition()
  182.    {
  183.       return this.m_scrollPosition;
  184.    }
  185.    function setScrollPosition(pos)
  186.    {
  187.       var _loc1_ = this;
  188.       var _loc2_ = pos;
  189.       if(_loc1_.m_scrollPosition != _loc2_)
  190.       {
  191.          _loc2_ = Math.max(Math.min(_loc2_,_loc1_.m_maxPos),0);
  192.          if(_loc1_.m_scrollPosition != _loc2_)
  193.          {
  194.             _loc1_.m_scrollPosition = _loc2_;
  195.             _loc1_.m_scrollThumbMC._y = Math.round(_loc1_.m_scrollPosition * _loc1_.m_trackHeight / _loc1_.m_maxPos) + _loc1_.m_scrollTop;
  196.             _loc1_.executeCallBack();
  197.             return true;
  198.          }
  199.       }
  200.       return false;
  201.    }
  202.    function setLargeScroll(lScroll)
  203.    {
  204.       this.m_largeScroll = lScroll;
  205.    }
  206.    function setSmallScroll(sScroll)
  207.    {
  208.       this.m_smallScroll = sScroll;
  209.    }
  210.    function setEnabled(enabledFlag)
  211.    {
  212.       var _loc1_ = this;
  213.       _loc1_.m_enable = enabledFlag;
  214.       _loc1_.setScrollProperties(_loc1_.m_pageSize,_loc1_.m_maxPos);
  215.    }
  216.    function getSize()
  217.    {
  218.       var _loc1_ = this;
  219.       if(!_loc1_.m_horizontal)
  220.       {
  221.          return _loc1_._height;
  222.       }
  223.       return _loc1_._width;
  224.    }
  225.    function getMaxPos()
  226.    {
  227.       return this.m_maxPos;
  228.    }
  229.    function setSize(hgt)
  230.    {
  231.       var _loc1_ = this;
  232.       if(_loc1_._height != 1)
  233.       {
  234.          _loc1_.m_width = hgt + 1;
  235.          var _loc2_ = _loc1_.scrollTrack_mc;
  236.          _loc2_._yscale = 100;
  237.          _loc2_._yscale = 100 * _loc1_.m_width / _loc2_._height;
  238.          if(_loc1_.m_upArrowMC == undefined)
  239.          {
  240.             _loc1_.attachMovie("mUpArrow","m_upArrowMC",1);
  241.             _loc1_.attachMovie("mDownArrow","m_downArrowMC",2);
  242.             _loc1_.m_downArrowMC.controller = _loc1_.m_upArrowMC.controller = _loc1_;
  243.             _loc1_.m_upArrowMC.useHandCursor = _loc1_.m_downArrowMC.useHandCursor = false;
  244.             _loc1_.m_upArrowMC._x = _loc1_.m_upArrowMC._y = 0;
  245.             _loc1_.m_downArrowMC._x = 0;
  246.          }
  247.          _loc2_.controller = _loc1_;
  248.          _loc1_.m_downArrowMC._y = _loc1_.m_width - 16;
  249.          _loc1_.setScrollProperties(_loc1_.m_pageSize,_loc1_.m_maxPos);
  250.          _loc2_.topShad._yscale = 100;
  251.          _loc2_.topShad._xscale = 100;
  252.          _loc2_.topShad._y = _loc2_._y + 8;
  253.          _loc2_.botShad._yscale = 100;
  254.          _loc2_.botShad._xscale = 100;
  255.          _loc2_.botShad._y = _loc1_.m_downArrowMC._y - 8;
  256.       }
  257.    }
  258.    function scrollIt(inc, mode)
  259.    {
  260.       var _loc1_ = this;
  261.       var _loc2_ = _loc1_.m_smallScroll;
  262.       if(inc != "one")
  263.       {
  264.          _loc2_ = _loc1_.m_largeScroll != 0 ? _loc1_.m_largeScroll : _loc1_.m_pageSize;
  265.       }
  266.       _loc1_.setScrollPosition(_loc1_.getScrollPosition() + mode * _loc2_);
  267.    }
  268.    function sliderGoTo(state)
  269.    {
  270.       var _loc2_ = state;
  271.       var _loc1_ = this.m_scrollThumbMC;
  272.       _loc1_.mc_sliderTop.gotoAndStop(_loc2_);
  273.       _loc1_.mc_sliderBot.gotoAndStop(_loc2_);
  274.       _loc1_.mc_sliderMid.gotoAndStop(_loc2_);
  275.       _loc1_.grips.gotoAndStop(_loc2_);
  276.    }
  277.    function startDragThumb()
  278.    {
  279.       var _loc1_ = this;
  280.       _loc1_.sliderGoTo("down");
  281.       _loc1_.m_scrollThumbMC.lastY = _loc1_.m_scrollThumbMC._ymouse;
  282.       _loc1_.m_scrollThumbMC.onMouseMove = function()
  283.       {
  284.          this.controller.dragThumb();
  285.       };
  286.    }
  287.    function dragThumb()
  288.    {
  289.       var _loc1_ = this;
  290.       _loc1_.m_scrollThumbMC.scrollMove = _loc1_.m_scrollThumbMC._ymouse - _loc1_.m_scrollThumbMC.lastY + _loc1_.m_scrollThumbMC._y;
  291.       if(_loc1_.m_scrollThumbMC.scrollMove < _loc1_.m_scrollTop)
  292.       {
  293.          _loc1_.m_scrollThumbMC.scrollMove = _loc1_.m_scrollTop;
  294.       }
  295.       else if(_loc1_.m_scrollThumbMC.scrollMove > _loc1_.m_scrollBot)
  296.       {
  297.          _loc1_.m_scrollThumbMC.scrollMove = _loc1_.m_scrollBot;
  298.       }
  299.       _loc1_.m_scrollThumbMC._y = _loc1_.m_scrollThumbMC.scrollMove;
  300.       _loc1_.m_scrollPosition = Math.round(_loc1_.m_maxPos * (_loc1_.m_scrollThumbMC._y - _loc1_.m_scrollTop) / _loc1_.m_trackHeight);
  301.       _loc1_.m_isScrolling = true;
  302.       updateAfterEvent();
  303.       _loc1_.executeCallBack();
  304.    }
  305.    function stopDragThumb()
  306.    {
  307.       var _loc1_ = this;
  308.       _loc1_.sliderGoTo(_loc1_.m_mouseOverMC != _loc1_.m_scrollThumbMC ? "up" : "over");
  309.       _loc1_.m_isScrolling = false;
  310.       _loc1_.m_scrollThumbMC.onMouseMove = null;
  311.    }
  312.    function rollOverOrOutOfThumb(over)
  313.    {
  314.       var _loc1_ = this;
  315.       if(over)
  316.       {
  317.          _loc1_.m_mouseOverMC = _loc1_.m_scrollThumbMC;
  318.       }
  319.       else if(_loc1_.m_mouseOverMC == _loc1_.m_scrollThumbMC)
  320.       {
  321.          _loc1_.m_mouseOverMC = null;
  322.       }
  323.       _loc1_.sliderGoTo(!over ? "up" : "over");
  324.    }
  325.    function dragoutThumb()
  326.    {
  327.       var _loc1_ = this;
  328.       if(_loc1_.m_mouseOverMC == _loc1_.m_scrollThumbMC)
  329.       {
  330.          _loc1_.m_mouseOverMC = null;
  331.       }
  332.    }
  333.    function stopScrolling()
  334.    {
  335.       var _loc1_ = this;
  336.       _loc1_.m_downArrowMC.gotoAndStop(_loc1_.m_mouseOverMC != _loc1_.m_downArrowMC ? "up" : "over");
  337.       _loc1_.m_upArrowMC.gotoAndStop(_loc1_.m_mouseOverMC != _loc1_.m_upArrowMC ? "up" : "over");
  338.       clearInterval(_loc1_.m_scrollingIntervalID);
  339.    }
  340.    function rolloverPart(part)
  341.    {
  342.       this.m_mouseOverMC = part;
  343.       part.gotoAndStop("over");
  344.    }
  345.    function rolloutPart(part)
  346.    {
  347.       if(this.m_mouseOverMC == part)
  348.       {
  349.          this.m_mouseOverMC = null;
  350.       }
  351.       part.gotoAndStop("up");
  352.    }
  353.    function startTrackScroller()
  354.    {
  355.       var _loc1_ = this;
  356.       _loc1_.trackScroller();
  357.       _loc1_.m_scrollingIntervalID = setInterval(_loc1_,"scrollInterval",500,"page",-1);
  358.    }
  359.    function startUpDownScroller(part, dir)
  360.    {
  361.       var _loc1_ = this;
  362.       part.gotoAndStop("down");
  363.       _loc1_.scrollIt("one",dir);
  364.       _loc1_.m_scrollingIntervalID = setInterval(_loc1_,"scrollInterval",500,"one",dir);
  365.    }
  366.    function scrollInterval(inc, dir)
  367.    {
  368.       var _loc1_ = this;
  369.       var _loc2_ = inc;
  370.       clearInterval(_loc1_.m_scrollingIntervalID);
  371.       if(_loc2_ == "page")
  372.       {
  373.          _loc1_.trackScroller();
  374.       }
  375.       else
  376.       {
  377.          _loc1_.scrollIt(_loc2_,dir);
  378.       }
  379.       _loc1_.m_scrollingIntervalID = setInterval(_loc1_,"scrollInterval",35,_loc2_,dir);
  380.    }
  381.    function trackScroller()
  382.    {
  383.       var _loc1_ = this;
  384.       if(_loc1_.m_scrollThumbMC._y + _loc1_.m_thumbHeight < _loc1_._ymouse)
  385.       {
  386.          _loc1_.scrollIt("page",1);
  387.       }
  388.       else if(_loc1_.m_scrollThumbMC._y > _loc1_._ymouse)
  389.       {
  390.          _loc1_.scrollIt("page",-1);
  391.       }
  392.    }
  393. }
  394.